Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Reverse Connection Problema [C#]
Forum - C# / VB.NET - [C#] Reverse Connection Problema [C#]

Avatar
DexterELEL (Normal User)
Pro


Messaggi: 67
Iscritto: 05/01/2011

Segnala al moderatore
Postato alle 11:04
Mercoledì, 07/09/2011
Questo topic è stato chiuso dal moderatore

Salve ragazzi, ho un piccolo problema nel creare una reverse connection il server si blocca e solo quando riceve la connessione dal client manda i messaggi desiderati.. spiego meglio con i codici..

Client
Codice sorgente - presumibilmente C#

  1. public static void Connetti_Server()
  2.         {
  3.             TcpClient Connector = new TcpClient();
  4.             GetConnection:
  5.             string IP = "127.0.0.1";
  6.  
  7.             try
  8.             {
  9.                 Connector.Connect(IP, 2000);
  10.                 IsConnected = true;
  11.             }
  12.  
  13.             catch
  14.             {
  15.                 goto GetConnection;
  16.             }
  17.         }
  18.         private void button1_Click(object sender, EventArgs e)
  19.         {
  20.             Connetti_Server();
  21.         }



Server:
Codice sorgente - presumibilmente C# / VB.NET

  1. try
  2.             {
  3.                 IPAddress IP = IPAddress.Parse("127.0.0.1");
  4.                 TcpListener myList = new TcpListener(IP, 2000);
  5.                 MessageBox.Show("Connessioni in Ascolto");
  6.                 myList.Start();
  7.                 Socket s = myList.AcceptSocket();
  8.                 MessageBox.Show("Connessione Ricevuta: " + s.RemoteEndPoint);
  9.             }
  10.             catch { }



C'è qualcuno che saprebbe aiutarmi?? :-|:-|

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 11:20
Mercoledì, 07/09/2011
il motivo è perchè AcceptSocket è bloccante, ovvero tiene appeso il thread chiamante finchè non si connette un nuovo client.

ci sono un paio di modi furbi di aggirare questa cosa, il primo è quello di spostare  la connessione dei client e la ricezione dei dati in un thread separato, il secondo è quello di usare chiamate non bloccanti, come ad esempio BeginAcceptSocket:

http://msdn.microsoft.com/it-it/library/system.net.sockets ...
http://msdn.microsoft.com/it-it/library/system.net.sockets ...
http://msdn.microsoft.com/it-it/library/system.net.sockets ...
http://msdn.microsoft.com/it-it/library/system.threading.t ...

PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6407
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:21
Mercoledì, 07/09/2011
Testo quotato

Postato originariamente da HeDo:
ci sono un paio di modi furbi



Direi

un paio di modi standard

di scrivere queste applicazioni ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 11:26
Mercoledì, 07/09/2011
Testo quotato

Postato originariamente da nessuno:

Testo quotato

Postato originariamente da HeDo:
ci sono un paio di modi furbi



Direi

un paio di modi standard

di scrivere queste applicazioni ...



mi sembrava troppo cattivo sottolineare il fatto che queste cose SI DEVONO sapere quando si sviluppa del codice di rete, l'unica cosa che mi dispiace è che il primo programma di questo tizio è un trojan... ma che ci vuoi fare, mica posso bannarli tutti :(

PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6407
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:27
Mercoledì, 07/09/2011
Testo quotato

Postato originariamente da HeDo:
mica posso bannarli tutti :(



Sicuro ?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM
Avatar
DexterELEL (Normal User)
Pro


Messaggi: 67
Iscritto: 05/01/2011

Segnala al moderatore
Postato alle 11:34
Mercoledì, 07/09/2011
Utilizzare una Reverse Connection è sinonimo di trojan?? non mi pare comunque ho risolto..Grazie :D

PM